今天算是延續昨天的結果來繼續做更進一步的資料蒐集,當我們利用 Nmap 做完服務掃描後,如果我們掃描的目標是網頁伺服器的話,很常會看到這兩個 Port,分別是 80/443 Port ( 有時會同時看到有時只會有單獨一個 ),分別代表 HTTP/HTTPS,這個在前面講到 Web Server 的時候有稍微提到過,而當今天我們是要對網頁做滲透測試時,通常會先對網頁做網頁枚舉。
跟昨天提到網路枚舉算是類似的行為 ( 情資蒐集 ) 只是針對的列舉的事物不太一樣,今天的網頁枚舉 ( Web Enumeration ) 是針對網頁的資訊,例如 : 子網域有哪些 . 網頁的目錄/檔案 ...等,這邊就先來介紹子網域枚舉跟網頁目錄與文件枚舉。
Gobuster 是一個以字典檔來進行暴力枚舉的工具,有幾大類的枚舉模式,分別為下面五類。
dir 模式)==dns 模式)==vhost 模式)s3 / gcs 模式)tftp 模式)從字面上的意思就是列舉出網頁伺服器上有哪些目錄以及檔案。
通常我們在瀏覽網頁的時候我們注意看網址列的地方可以發現有些網頁會寫上該網頁檔案的名字,我下面用巴哈動漫瘋的網址來做說明。
https://ani.gamer.com.tw/mygather.php
我們可以看到這個網頁檔是叫做 mygather.php 的檔案,而這也代表巴哈動漫瘋的網頁伺服器裡面有這個檔案。
有看得到的檔案那反過來講是不是也有我們看不到的檔案,這時就輪到 Gobuster 的目錄與檔案枚舉的出場啦,我們可以來使用 Gobuster 來暴力枚舉網頁的目錄及檔案,有機會可以發現一些藏著攻擊線索的檔案。
gobuster dir -u [網址] -w [字典檔]
http:///https:// 的前綴由於這個實作需要有一個有提供網頁服務的目標我這邊就用我之前做過的 HTB LAB 的一題來介紹用法。
gobuster dir -u http://10.129.134.99 -w /usr/share/dirb/wordlists/common.txt
===============================================================
Gobuster v3.8.2
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://10.129.134.99
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/dirb/wordlists/common.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.8.2
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
.htaccess (Status: 403) [Size: 278]
.hta (Status: 403) [Size: 278]
.htpasswd (Status: 403) [Size: 278]
assets (Status: 301) [Size: 315] [--> http://10.129.134.99/assets/]
css (Status: 301) [Size: 312] [--> http://10.129.134.99/css/]
dashboard (Status: 301) [Size: 318] [--> http://10.129.134.99/dashboard/]
fonts (Status: 301) [Size: 314] [--> http://10.129.134.99/fonts/]
index.html (Status: 200) [Size: 58565]
js (Status: 301) [Size: 311] [--> http://10.129.134.99/js/]
server-status (Status: 403) [Size: 278]
Progress: 4613 / 4613 (100.00%)
===============================================================
Finished
===============================================================
這邊分成兩個部分來做解釋
[+] Url: http://10.129.134.99
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/dirb/wordlists/common.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.8.2
[+] Timeout: 10s
Url : 目標網址Method : 發送 HTTP 請求時所使用的 Request 方法 ( 預設是用 GET )。Threads : 枚舉使用的執行緒,越多枚舉的速度越快反之越慢,被發現的機率則是反比,越多越容易被發現 ( 預設使用10個執行緒 )。Wordlist : 使用的字典檔,這邊使用的字典檔是 dirb 這個工具提供的字典檔。 ( dirb 也是用來做目錄/檔案枚舉的工具 )。Negative Status codes : 不顯示狀態碼為 404 的檔案。User Agent : 發送 HTTP 請求時在封包 Header 帶入的客戶端身分識別字串。Timeout : 單一 HTTP 請求的最長等待時間 ( 預設為10秒 )。200 : 可以正常存取301 : 確實存在的目錄403 : 被拒絕存取的檔案通過這些資訊我們就可以來思考下一步可以怎麼做,可以進去這些目錄看看也可以進去可以存取的網頁看看,諸如此類,若是伺服器配置有問題的話或許能夠找到一些神奇的東西也說不定。
什麼是子網域 ?
直接用範例來做說明
這邊有一個頂級域名example.comcalendar.example.com與mail.example.com就是example.com的子網域
為什麼要做子網域枚舉 ?
若在主網域下沒找到什麼攻擊的線索可以在子網域尋找一些攻擊的方向就是擴大攻擊方向,或許子網域的防護會比較薄弱。
gobuster dir -d [網址] -w [字典檔]
這次沒找到實作的資源,等我有碰到相關的資源再來補上 ; ;
這次提到 gobuster 的兩個枚舉模式,對於 web 滲透測試來說是很重要的一個步驟,若沒有先蒐集這些資訊,會很難有方向要往哪邊做進一步的嘗試,這次我也是第一次研究才發現原來可以透過這兩個方法去挖出這麼多的資訊,學會使用也可以對 HTTP 的協定有進一步的認識。